package game.modes;

import hx.utils.SceneManager;
import game.worlds.GameWorld;

/**
 * 模式管理类
 */
class ModeManage {
	/**
	 * 当前模式
	 */
	public static var currentMode:Mode;

	/**
	 * 当前准备进入的模式世界
	 */
	private static var __currentReadyWorld:GameWorld;

	public static var currentReadyWorld(get, never):GameWorld;

	private static function get_currentReadyWorld():GameWorld {
		return __currentReadyWorld;
	}

	/**
	 * 准备世界实例
	 * @param world 
	 */
	public static function readyWorld(world:GameWorld):Void {
		__currentReadyWorld = world;
	}

	/**
	 * 启动世界
	 */
	public static function attackWorld():Void {
		if (__currentReadyWorld != null) {
			SceneManager.getInstance().replaceScene(__currentReadyWorld, true);
			__currentReadyWorld = null;
		}
	}

	/**
	 * 开始启动模式
	 * @param mode 
	 */
	public static function start(mode:Class<Mode>):Void {
		currentMode = Type.createInstance(mode, []);
		currentMode.enterInitScene();
	}

	/**
	 * 重新进入到上一个模式中
	 */
	public static function reset():Void {
		if (currentMode != null) {
			currentMode.enterInitScene();
		}
	}
}
